Systems and methods for synchronizing files in a networked communication system

ABSTRACT

Systems and methods are provided for synchronizing files in a networked communication system. A server can receive a file or a notification of an update to a file from a client and/or remote storage medium. In response, the server can determine whether the received file is the most recent version of the file. The server can compare the timestamp of the received file with the timestamp of the file currently stored as the most recent version of the file. If the received file is the most recent version of the file, the server stored the received file as the most recent version of the file.

BACKGROUND

1. Technical Field

Disclosed systems and methods relate to synchronizing files in anetworked communication system.

2. Description of the Related Art

Traditionally, computing devices managed data files locally. Forexample, a computer stored data files on a local storage medium andaccessed the contents of the data files by retrieving them from thelocal storage medium. Oftentimes, the local storage medium could only beaccessed by the computing device being physically coupled to the storagemedium. Therefore, the management of data files on a local storagemedium was largely independent of other computing devices. Such a localdata file management had some benefits. One benefit was the speed atwhich data files could be stored and accessed. Another benefit was theability to maintain the most recent version of the data files in thelocal storage medium.

However, the local management of data files rendered certain datamanagement tasks cumbersome, especially the sharing of data filesamongst multiple computing devices. For example, every time a userwanted to provide a data file to another computer, the user had to copythe data file into a portable storage medium, such as a portable harddisk or a Universal Serial Bus (USB) drive, and copy the data file inthe portable storage medium to the destination computing device. Inaddition, if a user updated a data file on one computer or portablestorage medium, this would create different versions of the data fileacross different computers and/or portable storage medium. The userwould then have to keep track of the computer or portable storage mediumwith the most recent version of the data file so that the user did notinadvertently access an older version of the data file stored on adifferent computer or portable storage medium. Because this mechanisminvolves a physical coupling of the portable storage medium to thedestination computing device, sharing of data files was slow, involvedtoo much user interaction, created different versions of data filesstored at different computers and/or portable storage medium, and was atbest cumbersome.

Some of these issues have been addressed with communication networks.Communication networks enable server/client systems to share data filesamongst multiple computing devices. A server/client data sharing systemallows clients, such as computers, to locally access data files, just asin traditional computing devices. However, a server/client data sharingsystem also allows clients to access data files at a remote server viacommunication networks. Such a remote data access allows users to storedata files at a remote server and access those files from any clientsthat are coupled to the remote server. Existing implementations ofserver/client data sharing systems include web-folder services, such asDROPBOX, INC., a Network File System (NFS,) or an Andrew File System(AFS.)

With existing server/client systems, the servers typically have theirown storage. Data files from any client are sent through the server forstorage. This allow for the server to be able to maintain masterversions (or most recent versions) of the data files received from anyclient. Any time a client sends an updated data file to the server, theserver stores the updated data file as the most recent version of thedata file. The server will then notify all of the clients of the updateddata file. Then, when the server receives a request for the data filefrom a client, the server will send the most recent version of the datafile (or updated data file) to the client.

With the advances in network communications, including the introductionof cloud computing, data files can be stored at one or more remotestorage locations other than at the server. Because data files can bestored at locations other than at the server, the server may not receiveall data files from all clients for storage. A client can send anupdated data file to a remote storage location without the server'sknowledge. Existing servers are not necessarily informed of updated datafiles from the remote storage locations. As a result, existing serversdo not always know when the data file that it accesses is the mostrecent version of the data file.

Therefore, there is a need in the art to provide systems and methods forimproving the synchronization of files in a networked communicationsystem. Accordingly, it is desirable to provide methods and systems thatovercome these and other deficiencies of the related art.

SUMMARY

In accordance with the disclosed subject matter, systems and methods areprovided for synchronizing files in a networked communication system.

Disclosed subject matter includes a non-transitory computer readablemedium having executable instructions. The executable instructions areoperable to cause a server to store a file received from a client over acommunication network in a storage medium, wherein the file is stored asa master version and has associated with it a first timestamp; receive anotification of an update to the file, wherein the notification hasassociated with it a second timestamp for the updated file; and comparethe first timestamp to the second timestamp. When the second timestampis later than the first timestamp, the executable instructions arefurther operable to cause the server to send a request for the updatedfile; and receive and store the updated file in the storage medium,wherein the updated file is stored as the master version.

Disclosed subject matter includes an apparatus comprising one or moreinterfaces configured to provide communication with a client via acommunication network; and a processor, in communication with the one ormore interfaces, and configured to run a module stored in memory. Themodule is configured to store a file received from a client over acommunication network in a storage medium, wherein the file is stored asa master version and has associated with it a first timestamp; toreceive a notification of an update to the file, wherein thenotification has associated with it a second timestamp for the updatedfile; and to compare the first timestamp to the second timestamp. Whenthe second timestamp is later than the first timestamp, the module isfurther configured to send a request for the updated file; and toreceive and store the updated file in the storage medium, wherein theupdated file is stored as the master version.

Disclosed subject matter includes a method comprising storing a filereceived from a client over a communication network in a storage medium,wherein the file is stored as a master version and has associated withit a first timestamp; receiving a notification of an update to the file,wherein the notification has associated with it a second timestamp forthe updated file; and comparing the first timestamp to the secondtimestamp. When the second timestamp is later than the first timestamp,the method also comprises sending a request for the updated file; andreceiving and storing the updated file in the storage medium, whereinthe updated file is stored as the master version.

There has thus been outlined, rather broadly, the features of thedisclosed subject matter in order that the detailed description thereofthat follows may be better understood, and in order that the presentcontribution to the art may be better appreciated. There are, of course,additional features of the disclosed subject matter that will bedescribed hereinafter and which will form the subject matter of theclaims appended hereto.

In this respect, before explaining at least one embodiment of thedisclosed subject matter in detail, it is to be understood that thedisclosed subject matter is not limited in its application to thedetails of construction and to the arrangements of the components setforth in the following description or illustrated in the drawings. Thedisclosed subject matter is capable of other embodiments and of beingpracticed and carried out in various ways. Also, it is to be understoodthat the phraseology and terminology employed herein are for the purposeof description and should not be regarded as limiting.

As such, those skilled in the art will appreciate that the conception,upon which this disclosure is based, may readily be utilized as a basisfor the designing of other structures, methods and systems for carryingout the several purposes of the disclosed subject matter. It isimportant, therefore, that the claims be regarded as including suchequivalent constructions insofar as they do not depart from the spiritand scope of the disclosed subject matter.

These together with the other objects of the disclosed subject matter,along with the various features of novelty which characterize thedisclosed subject matter, are pointed out with particularity in theclaims annexed to and forming a part of this disclosure. For a betterunderstanding of the disclosed subject matter, its operating advantagesand the specific objects attained by its uses, reference should be hadto the accompanying drawings and descriptive matter in which there areillustrated preferred embodiments of the disclosed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

Various objects, features, and advantages of the disclosed subjectmatter can be more fully appreciated with reference to the followingdetailed description of the disclosed subject matter when considered inconnection with the following drawings, in which like reference numeralsidentify like elements.

FIG. 1 illustrates a diagram of a networked communication system.

FIG. 2 illustrates a diagram of a networked communication system inaccordance with an embodiment of the disclosed subject matter.

FIG. 3 illustrates a flow diagram illustrating how the serversynchronizes files in a networked computer system in accordance withcertain embodiments of the disclosed subject matter.

FIG. 4 illustrates a flow diagram illustrating how the serversynchronizes files in a networked computer system in accordance withcertain embodiments of the disclosed subject matter.

FIG. 5 illustrates a flow diagram illustrating how the serversynchronizes files in a networked computer system in accordance withcertain embodiments of the disclosed subject matter.

FIG. 6 illustrates a flow diagram illustrating how the serversynchronizes files in a networked computer system in accordance withcertain embodiments of the disclosed subject matter.

FIG. 7 illustrates a block diagram of a server in accordance withcertain embodiments of the disclosed subject matter.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forthregarding the systems and methods of the disclosed subject matter andthe environment in which such systems and methods may operate, etc., inorder to provide a thorough understanding of the disclosed subjectmatter. It will be apparent to one skilled in the art, however, that thedisclosed subject matter may be practiced without such specific details,and that certain features, which are well known in the art, are notdescribed in detail in order to avoid complication of the subject matterof the disclosed subject matter. In addition, it will be understood thatthe examples provided below are exemplary, and that it is contemplatedthat there are other systems and methods that are within the scope ofthe disclosed subject matter.

The disclosed subject matter relates to systems and methods forproviding synchronization of data files in a networked computer system.The clients in the networked computer system can store data files at oneor more remote locations, including at a server and/or at one or moreremote storage media apart from the server. The remote storage media canbe in direct communication with the server or via a communicationnetwork. The data files can be any suitable files that include text,audio, video, images, or any other suitable data or combination of data.

In accordance with the disclosed subject matter, the server can receiveone or more data files from any client and/or remote storage medium,within the same communication network or from other communicationnetworks. In response, the server can determine whether the receiveddata file is the most recent version of the data file. In particular,the server can determine whether the received data file has been updatedand should now represent the master version of the data file that isstored remotely.

The server can compare the timestamp of the received data file to thetimestamp of the most recent version of the data file that is currentlystored at the server or other remote storage medium. The timestamp canrepresent the last date and time that the data file was updated, saved,and/or accessed. Although the disclosed subject matter is described inthe context of comparing timestamps, any other suitable metric orcombination of metrics can be used to determine the most recent versionof the data file. In one embodiment, the server can send a request toits local storage or remote storage medium for the timestamp of thestored data file. In another embodiment, the server can send a requestto its local storage or remote storage medium for the stored data file,and upon receiving the stored data file, can determine the timestamp. Inyet another embodiment, the server can maintain a record of thetimestamp of the stored data file.

When the timestamp of the received data file is more recent (e.g., alater date and time) than the timestamp of the stored data file, thisindicates that the received data file is an updated version of thestored data file. Accordingly, the server can store the received datafile at its local storage or remote storage medium. The server can nowtreat the received data file as the most recent version of the data filethat is currently stored at the server or remote storage medium. In oneembodiment, the server can replace the previously stored data file withthe received data file so that only the most recent version of the datafile is stored and can be accessed. In another embodiment, the servercan store the received data file without replacing the previously storeddata file so all versions of the data file are stored and can beaccessed. Upon storing the received data file at its local storage orremote storage medium, the server can also update its record with thetimestamp of the newly stored data file. The server can also sendnotifications to the clients and/or remote storage media notifying themof the updated data file.

When the timestamp of the received data file is less recent (e.g., anearlier date and time) than the timestamp of the stored data file, thisindicates that the received data file is an older version of the storeddata file. Accordingly, the server can ignore the received data file.Alternatively, the server can store the received file at its localstorage or remote storage medium as an older version of the data file.

Also in accordance with the disclosed subject matter, the server canreceive one or more notifications about updates to data files (ratherthan the data files themselves) from any client and/or remote storagemedium, within the same communications network or from othercommunication networks. The notification can include any suitableinformation about the updated data file, including the timestamp of theupdated data file. In response, the server can determine whether theupdated data file is the most recent version of the data file, similarto that described above when the server receives the data files. If theupdated data file is the most recent version of the data file, then theserver can send a request to the client and/or remote storage medium forthe updated data file. The server can store the updated data file at itslocal storage or remote storage medium and treat the updated data fileas the most recent version of the data file that is currently stored atthe server or remote storage medium.

In one embodiment, the server can automatically receive notificationsabout updates to data files, or the updated data files themselves, fromany client and/or remote storage medium. In another embodiment, theserver can periodically send requests to any client and/or remotestorage medium for updates to data files. In yet another embodiment, alistener can be placed at any client and/or remote storage medium tomonitor for updates to data files and in response, to send notificationsof the updates or the updated data files themselves, to the server. Thelistener can be any suitable hardware, software, or a combinationthereof.

The disclosed subject matter can achieve greater reliability byproviding clock synchronization at any one or more of the client,server, and remote storage medium. In one embodiment, the internalclocks at each of these devices can be synchronized to a master clockand/or to one another. In another embodiment, the server can be providedwith information about the clocks of any client and/or remote storagemedium. This allows the server to take into account any changes in timewith respect to the server clock when comparing timestamp information.The information about the clocks of any client and/or remote storagemedium can be the delay between those clocks and the server clock, orany other suitable information. In yet another embodiment, the servercan also keep a record of the history of any time drift between theclocks of any client and/or remote storage medium and the server. Thisallows the server to take into account any changes in time whencomparing timestamp information. Providing clock synchronization ensuresthe accuracy of the timestamps for data files so that the data file withthe most recent timestamp is stored as the most recent version of thedata file. Clock synchronization can occur once, at periodic intervals,at random intervals, in response to a server receiving a data file, inresponse to a server receiving a notification of an update to a datafile, or at any other suitable time or combination of times.

The disclosed subject matter can also achieve greater reliability byperforming error control on the timestamps of data files. If a serverreceives a data file or a notification of an update to a data filehaving a timestamp at some future time or invalid time (e.g., a date ofJanuary 32, a time of 25:00), the server can change the timestampassociated with that data file and perform synchronization on the datafile. Alternatively, the server can treat the data file or notificationas invalid and decide not to perform synchronization on the data file.In addition, the server can also check the timestamps of the data filesstored at its local storage and/or remote storage medium, and/or itsrecord of timestamps of stored data files, and correct any timestamp setto some future time or invalid time.

The disclosed subject matter allows for a server to synchronize datafiles across different remote storage mediums so that any clientaccessing a remote data file stored at the server or other remotestorage medium can receive the most recent version of the data file.

FIG. 1 illustrates a diagram of a networked communication system inaccordance with existing systems. FIG. 1 includes a communicationnetwork 102, at least one client 104 (e.g., client 104-1, 104-2, . . .104-N), and a server system 110. The communication network 102 caninclude the Internet, a cellular network, a telephone network, acomputer network, a packet switching network, a line switching network,a local area network (LAN), a wide area network (WAN), a global areanetwork, or any number of private networks currently referred to as anIntranet, and/or any other network or combination of networks that canaccommodate data communication. Such networks may be implemented withany number of hardware and software components, transmission media andnetwork protocols. Although FIG. 1 represents the network 102 as asingle network, the network 102 can include multiple interconnectednetworks listed above. Each client 104 can include a desktop computer, amobile computer, a tablet computer, a cellular device, or any othercomputing devices having a processor and memory. Each client 104 cancommunicate with the server system 110 via the communication network 102to send and receive data files. The server system 110 includes a server106 and its local storage medium 108 for storing the data files.Although FIG. 1 represents the server 106 and the storage medium 108 asseparate components, the server 106 and storage medium 108 can becombined together. Although FIG. 1 represents the server system 110 as asingle server system, the server system 110 can include more than oneserver and can be part of a cloud-computing platform.

FIG. 2 illustrates a diagram of a networked communication system inaccordance with an embodiment of the disclosed subject matter. FIG. 2includes a communication network 202, at least one client 204 (e.g.,client 204-1, 204-2, . . . 204-N), a server 206, and at least one remotestorage medium (e.g., storage medium 208-1, 208-2, . . . 208-N, 210-1, .. . 210-N). The communication network 202 can be similar tocommunication network 102 (FIG. 1). Each client 204 can be similar toclient 104 (FIG. 1). The server 206 can be similar to server system 106(FIG. 1) and can have its own local storage medium combined with, orseparate from, the server. There can be one or more remote storage media208 that are coupled directly to server 206. There can also be one ormore remote storage media 210 that are coupled to server 206 viacommunication network 202. Remote storage media 208 and/or 210 can beany suitable storage media including a physical database or clouddatabase. Each client 204 can communicate with the server 206 via thecommunication network 202 to send and receive data files. Data files canbe stored at server 206, one or more of storage media 208, and/or one ormore of storage media 210.

FIG. 3 illustrates a flow diagram illustrating how a server synchronizesfiles in a networked computer system in accordance with certainembodiments of the disclosed subject matter. At step 302, the server 206receives a file from a client 204 or remote storage medium 208/210. Atstep 304, the server 206 determines whether the received file is themost recent version of the file. If the received file is not the mostrecent version of the file, server 206 ignores the received file at step306. If the received file is the most recent version of the file, theserver 206 saves the received file as the most recent version of thefile at step 308. The server 206 can save the received file at its localstorage medium and/or at one or more of the remote storage media208/210.

FIG. 4 illustrates a flow diagram illustrating how a server synchronizesfiles in a networked computer system in accordance with certainembodiments of the disclosed subject matter. At step 402, the server 206receives a file from a client 204. The file can include informationabout the file, including a timestamp. The timestamp can represent thelast date and time that the data file was updated, saved, and/oraccessed.

At step 404, the server 206 sends a request for the timestamp of thefile currently stored as the most recent version of the file. The mostrecent version of the file can be stored at the server 206's localstorage medium and/or remote storage medium 208/210. The server 206 cansend the request to its local storage medium and/or remote storagemedium 208/210. The request can be formatted as an Extensible MarkupLanguage (XML), Google Protobuf, Hypertext Transfer Protocol (HTTP),JavaScript Object Notation (JSON), or any other format suitable for datacommunication. In response, the server 206 receives the timestamp of thefile currently stored as the most recent version of the file at step406. The server 206 can receive just the timestamp, informationdescribing the file that includes the timestamp, and/or the entire filefrom which the timestamp can be extracted. The server 206 can receivethis information in the same format as, or a different format from, therequest.

At step 408, the server 206 compares the timestamp of the received filewith the timestamp of the file currently stored as the most recentversion of the file. At step 410, the server 206 determines whether thetimestamp of the received file is more recent than the timestamp of thefile currently stored as the most recent version of the file. If thetimestamp of the received file is older than the timestamp of the filecurrently stored as the most recent version of the file, server 206ignores the received file at step 412.

If the timestamp of the received file is later than the timestamp of thefile currently stored as the most recent version of the file, server 206saves the received file as the most recent version of the file at step414. The server 206 can save the received file at its local storagemedium and/or at one or more of the remote storage media 208/210.Although FIG. 4 shows the server 206 as receiving the file from theclient 204, the server 206 can also receive the file from the remotestorage medium 208/210.

FIG. 5 illustrates a flow diagram illustrating how a server synchronizesfiles in a networked computer system in accordance with certainembodiments of the disclosed subject matter. At step 502, the server 206receives a file from a client 204. The file can include informationabout the file, including a timestamp. The timestamp can represent thelast date and time that the data file was updated, saved, and/oraccessed.

At step 504, the server 206 compares the timestamp of the received filewith a record of the timestamp of the file currently stored as the mostrecent version of the file. At step 506, the server 206 determineswhether the timestamp of the received file is more recent than therecorded timestamp of the file currently stored as the most recentversion of the file. If the timestamp of the received file is older thanthe timestamp of the file currently stored as the most recent version ofthe file, server 206 ignores the received file at step 508.

If the timestamp of the received file is later than the timestamp of thefile currently stored as the most recent version of the file, server 206saves the received file as the most recent version of the file at step510. The server 206 can save the received file at its local storagemedium and/or at one or more of the remote storage media 208/210. Theserver 206 also updates its record with the timestamp of the receivedfile as the file currently stored as the most recent version of the filein step 512. Although steps 510 and 512 are shown as separate steps,they can be done in any order or at the same time. Although FIG. 5 showsthe server 206 receiving the file from the client 204, the server 206can also receive the file from the remote storage medium 208/210.

FIG. 6 illustrates a flow diagram illustrating how a server synchronizesfiles in a networked computer system in accordance with certainembodiments of the disclosed subject matter. At step 602, the server 206receives a notification of an update to a file. The server 206 canreceive the notification from a client 204 or from a remote storagemedium 208/210. The notification can include any suitable informationabout an updated data file, including the timestamp of the updated datafile. The timestamp can represent the last date and time that the datafile was updated, saved, and/or accessed.

At step 604, the server 206 compares the timestamp of the updated filewith the timestamp of the file currently stored as the most recentversion of the file. The timestamp of the file currently stored as themost recent version of the file can be requested and received from theserver 206's local storage medium and/or remote storage medium 208/210(similar to steps 404 and 406 in FIG. 4). Alternatively, the timestampof the file currently stored as the most recent version of the file canbe the recorded timestamp locally stored at the server 206 (similar tostep 504 in FIG. 5).

At step 606, the server 206 determines whether the timestamp of theupdated file is more recent than the timestamp of the file currentlystored as the most recent version of the file. If the timestamp of thereceived file is older than the timestamp of the file currently storedas the most recent version of the file, server 206 ignores the receivedfile at step 608.

If the timestamp of the received file is later than the timestamp of thefile currently stored as the most recent version of the file, server 206requests the updated file from the client 204 or from the remote storagemedium 208/210 at step 610. The request can be formatted as XML, GoogleProtobuf, HTTP, JSON, or any other formats suitable for datacommunication. Upon receiving the updated file, the server stores theupdated file as the most recent version of the file at step 612. Theserver 206 can save the updated file at its local storage medium and/orat one or more of the remote storage media 208/210. The server 206 canalso update its record with the timestamp of the updated file as thefile currently stored as the most recent.

FIG. 7 illustrates a block diagram of a server in accordance withcertain embodiments of the disclosed subject matter. The server 206 caninclude at least a processor 702, at least one memory 704, a clocksynchronization module 706, a version control module 708, and an errorcontrol module 710.

A clock synchronization module 706 is configured to provide clocksynchronization between the server 206 and one or more of the client 204and/or remote storage medium 208/210. The clock synchronization module706 can be configured to ensure the accuracy of the timestamps for filesso that the file with the most recent timestamp is stored as the mostrecent version of the file. The clock synchronization module 706 can beconfigured to perform synchronization once, at periodic intervals, atrandom intervals, in response to the server 206 receiving a data file,in response to the server 206 receiving a notification of an update to adata file, or at any other suitable time or combination of times.

An error control module 710 is configured to perform error control onthe timestamps of data files. The error control module 710 can beconfigured to check the timestamps of incoming files and/or storedfiles. The error control module 710 can be further configured to correctand/or reject those files having a timestamp that is set to a futuretime or invalid time.

A version control module 708 is configured to synchronize the files thatit receives from one or more of the client 204 and/or remote storagemedium 208/210 so that the most recent version of the file is alwaysstored. The version control module 708 is further configured to performthe processing steps shown and described in connection with FIGS. 3-6.The version control module 708 can include a record of the timestampsfor the data files stored at the server 206's local storage mediumand/or remote storage media 208/210. The version control module 708 cancommunicate with the clock synchronization module 706 and the errorcontrol module 710 to ensure the accuracy of the timestamps that arebeing compared and of the data files being synchronized.

The clock synchronization module 706, the version control module 708,and the error control module 710 can be implemented in software, whichmay be stored in memory 704. FIG. 7 shows server 206 having separatemodules 706, 708, and 710 that perform the above-described operations inaccordance with certain embodiments of the disclosed subject matter. Inother embodiments of the invention, server 206 can include additionalmodules, less modules, or any other suitable combination of modules thatperform any suitable operation or combination of operations. The memory704 can be a non-transitory computer readable medium, flash memory, amagnetic disk drive, an optical drive, a programmable read-only memory(PROM), a read-only memory (ROM), or any other memory or combination ofmemories. The software runs on a processor 702 capable of executingcomputer instructions or computer code. The processor 702 might also beimplemented in hardware using an application specific integrated circuit(ASIC), programmable logic array (PLA), field programmable gate array(FPGA), or any other integrated circuit.

An interface 712 provides an input and/or output mechanism tocommunicate over a network. The interface 712 enables communication withclients 204, as well as other network nodes in the communication network202. The interface 712 also enables communications with storage media210 over the communication network 202 and with storage media 208. Theinterface 712 is implemented in hardware to send and receive signals ina variety of mediums, such as optical, copper, and wireless, and in anumber of different protocols some of which may be non-transient.

The server 206 can be configured with one or more processors 702 thatprocess instructions and run software that may be stored in the memory704. The processor 702 also communicates with the memory and interfacesto communicate with other devices. The processor 702 can be anyapplicable processor such as a system-on-a-chip that combines a CPU, anapplication processor, and flash memory.

The server 206 can operate using an operating system (OS) software. Insome embodiments, the OS software is based on a Linux software kerneland runs specific applications in the server such as monitoring tasksand providing protocol stacks. The OS software allows server resourcesto be allocated separately for control and data paths. For example,certain packet accelerator cards and packet services cards are dedicatedto performing routing or security control functions, while other packetaccelerator cards/packet services cards are dedicated to processing usersession traffic. As network requirements change, hardware resources canbe dynamically deployed to meet the requirements in some embodiments.

The server's software can be divided into a series of tasks that performspecific functions. These tasks communicate with each other as needed toshare control and data information throughout the server 206. A task canbe a software process that performs a specific function related tosystem control or session processing. Three types of tasks operatewithin the server 206 in some embodiments: critical tasks, controllertasks, and manager tasks. The critical tasks control functions thatrelate to the server's ability to process calls such as serverinitialization, error detection, and recovery tasks. The controllertasks can mask the distributed nature of the software from the user andperform tasks such as monitoring the state of subordinate manager(s),providing for intra-manager communication within the same subsystem, andenabling inter-subsystem communication by communicating withcontroller(s) belonging to other subsystems. The manager tasks cancontrol system resources and maintain logical mappings between systemresources.

Individual tasks that run on processors in the application cards can bedivided into subsystems. A subsystem is a software element that eitherperforms a specific task or is a culmination of multiple other tasks. Asingle subsystem includes critical tasks, controller tasks, and managertasks. Some of the subsystems that run on the server 206 include asystem initiation task subsystem, a high availability task subsystem, ashared configuration task subsystem, and a resource managementsubsystem.

The system initiation task subsystem is responsible for starting a setof initial tasks at system startup and providing individual tasks asneeded. The high availability task subsystem works in conjunction withthe recovery control task subsystem to maintain the operational state ofthe server 206 by monitoring the various software and hardwarecomponents of the server 206. Recovery control task subsystem isresponsible for executing a recovery action for failures that occur inthe server 206 and receives recovery actions from the high availabilitytask subsystem. Processing tasks are distributed into multiple instancesrunning in parallel so if an unrecoverable software fault occurs, theentire processing capabilities for that task are not lost. User sessionprocesses can be sub-grouped into collections of sessions so that if aproblem is encountered in one sub-group users in another sub-group willnot be affected by that problem.

Shared configuration task subsystem can provide the server 206 with anability to set, retrieve, and receive notification of serverconfiguration parameter changes and is responsible for storingconfiguration data for the applications running within the server 206. Aresource management subsystem is responsible for assigning resources(e.g., processor and memory capabilities) to tasks and for monitoringthe task's use of the resources.

In some embodiments, the server 206 can reside in a data center and forma node in a cloud computing infrastructure. The server 206 can alsoprovide services on demand. A module hosting a client is capable ofmigrating from one server to another server seamlessly, without causingprogram faults or system breakdown. The server 206 on the cloud can bemanaged using a management system.

The client 204 can include user equipment of a cellular network. Theuser equipment communicates with one or more radio access networks andwith wired communication networks. The user equipment can be a cellularphone having phonetic communication capabilities. The user equipment canalso be a smart phone providing services such as word processing, webbrowsing, gaming, e-book capabilities, an operating system, and a fullkeyboard. The user equipment can also be a tablet computer providingnetwork access and most of the services provided by a smart phone. Theuser equipment operates using an operating system such as Symbian OS,iPhone OS, RIM's Blackberry, Windows Mobile, Linux, HP WebOS, andAndroid. The screen might be a touch screen that is used to input datato the mobile device, in which case the screen can be used instead ofthe full keyboard. The user equipment can also keep global positioningcoordinates, profile information, or other location information.

The client 204 also includes any platforms capable of computations andcommunication. Non-limiting examples can include televisions (TVs),video projectors, set-top boxes or set-top units, digital videorecorders (DVR), computers, netbooks, laptops, and any otheraudio/visual equipment with computation capabilities.

It is to be understood that the disclosed subject matter is not limitedin its application to the details of construction and to thearrangements of the components set forth in the following description orillustrated in the drawings. The disclosed subject matter is capable ofother embodiments and of being practiced and carried out in variousways. Also, it is to be understood that the phraseology and terminologyemployed herein are for the purpose of description and should not beregarded as limiting.

As such, those skilled in the art will appreciate that the conception,upon which this disclosure is based, may readily be utilized as a basisfor the designing of other structures, methods, and systems for carryingout the several purposes of the disclosed subject matter. It isimportant, therefore, that the claims be regarded as including suchequivalent constructions insofar as they do not depart from the spiritand scope of the disclosed subject matter.

Although the disclosed subject matter has been described and illustratedin the foregoing exemplary embodiments, it is understood that thepresent disclosure has been made only by way of example, and thatnumerous changes in the details of implementation of the disclosedsubject matter may be made without departing from the spirit and scopeof the disclosed subject matter, which is limited only by the claimswhich follow.

What is claimed is:
 1. A non-transitory computer readable medium havingexecutable instructions operable to cause a server to: store a filereceived from a client over a communication network in a storage medium,wherein the file is stored as a master version and has associated withit a first timestamp; receive a notification of an update to the file,wherein the notification has associated with it a second timestamp forthe updated file; compare the first timestamp to the second timestamp;and when the second timestamp is later than the first timestamp: send arequest for the updated file, and receive and store the updated file inthe storage medium, wherein the updated file is stored as the masterversion.
 2. The computer readable medium of claim 1, further comprisingexecutable instructions operable to cause the server to receive arequest for the file from the client and to send the updated file to theclient in response to the request.
 3. The computer readable medium ofclaim 1, wherein the executable instructions operable to cause theserver to compare the first timestamp to the second timestamp is furtheroperable to cause the server to send a request to the storage medium forthe first timestamp and to receive the first timestamp from the storagemedium in response to the request.
 4. The computer readable medium ofclaim 1, wherein the executable instructions operable to cause theserver to compare the first timestamp to the second timestamp is furtheroperable to cause the server to retrieve the first timestamp from arecord of timestamps for all files stored in the storage medium.
 5. Thecomputer readable medium of claim 4, further comprising executableinstructions operable to cause the server to update the record oftimestamps by replacing first timestamp with the second timestamp forthe updated file.
 6. The computer readable medium of claim 1, whereinthe first timestamp comprises a date and time when the file was lastupdated and the second timestamp comprises a data and time when theupdated file was last updated.
 7. An apparatus comprising: one or moreinterfaces configured to provide communication with a client via acommunication network; and a processor, in communication with the one ormore interfaces, and configured to run a module stored in memory that isconfigured: to store a file received from a client over a communicationnetwork in a storage medium, wherein the file is stored as a masterversion and has associated with it a first timestamp; to receive anotification of an update to the file, wherein the notification hasassociated with it a second timestamp for the updated file; to comparethe first timestamp to the second timestamp; and when the secondtimestamp is later than the first timestamp: to send a request for theupdated file, and to receive and store the updated file in the storagemedium, wherein the updated file is stored as the master version.
 8. Theapparatus of claim 7, wherein the module is further configured toreceive a request for the file from the client and to send the updatedfile to the client in response to the request.
 9. The apparatus of claim7, wherein the module is further configured to send a request to thestorage medium for the first timestamp and to receive the firsttimestamp from the storage medium in response to the request.
 10. Theapparatus of claim 7, wherein the module is further configured toretrieve the first timestamp from a record of timestamps for all filesstored in the storage medium, wherein the record of timestamps is storedin the memory.
 11. The apparatus of claim 10, wherein the module isfurther configured to update the record of timestamps by replacing firsttimestamp with the second timestamp for the updated file.
 12. Theapparatus of claim 7, wherein the first timestamp comprises a date andtime when the file was last updated and the second timestamp comprises adata and time when the updated file was last updated.
 13. The apparatusof claim 7, wherein the module is further configured to receive thenotification of the update to the file from, and to send the request forthe updated file to, the client.
 14. The apparatus of claim 7, whereinthe module is further configured to receive the notification of theupdate to the file from, and to send the request for the updated fileto, a second storage medium.
 15. A method comprising: storing a filereceived from a client over a communication network in a storage medium,wherein the file is stored as a master version and has associated withit a first timestamp; receiving a notification of an update to the file,wherein the notification has associated with it a second timestamp forthe updated file; comparing the first timestamp to the second timestamp;and when the second timestamp is later than the first timestamp: sendinga request for the updated file, and receiving and storing the updatedfile in the storage medium, wherein the updated file is stored as themaster version.
 16. The method of claim 15, further comprising receivinga request for the file from the client and sending the updated file tothe client in response to the request.
 17. The method of claim 15,further comprising sending a request to the storage medium for the firsttimestamp and receiving the first timestamp from the storage medium inresponse to the request.
 18. The method of claim 15, further comprisingretrieving the first timestamp from a record of timestamps for all filesstored in the storage medium.
 19. The method of claim 18, furthercomprising updating the record of timestamps by replacing firsttimestamp with the second timestamp for the updated file.
 20. The methodof claim 15, wherein the first timestamp comprises a date and time whenthe file was last updated and the second timestamp comprises a data andtime when the updated file was last updated.